import {ApiClient, publicApiClient} from './api'
import type {LoginRequest, LoginResponse, User, UserPageResponse, UserSearchParams} from '@/types/business/auth'

/**
 * 认证服务API
 * 只处理认证相关的功能，用户管理功能由userService处理
 *
 * 注意：
 * - login() 使用 publicApiClient，因为登录时用户还未认证
 * - 其他需要认证的接口使用 ApiClient
 */
export const authService = {
    // 用户登录 - 使用公共客户端，无需认证
    async login(data: LoginRequest) {
        return publicApiClient.post<LoginResponse>('/auth/login', data)
    },

    // 用户登出 - 需要认证，使用认证客户端
    async logout() {
        return ApiClient.post<void>('/auth/logout', {showSuccess: false})
    },

    // 刷新令牌 - 需要认证，使用认证客户端
    async refreshToken(refreshToken: string) {
        return ApiClient.post<LoginResponse>('/auth/refresh', {showSuccess: false})
    },

    // 获取当前用户信息 - 需要认证，使用认证客户端
    async getCurrentUser() {
        return ApiClient.get<User>('/users/current', {showSuccess: false})
    },

    // 获取所有用户（用于下拉选择）
    async getAllUsers() {
        return ApiClient.get<User[]>('/users/all', {showSuccess: false})
    },

    // 获取用户列表
    async getUsers(params: UserSearchParams) {
        return ApiClient.get<UserPageResponse>('/users', {params, showSuccess: false})
    },

    // 获取用户详情
    async getUser(id: number) {
        return ApiClient.get<User>(`/users/${id}`, {showSuccess: false})
    },

    // 获取超级管理员列表
    async getSuperAdmins() {
        return ApiClient.get<User[]>('/users/admins', {showSuccess: false})
    }
}

